﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace CPEBookWin
{
    public partial class EditionProfilControl : UserControl
    {
        private const string ErreurChampObligatoire = "Ce champ est obligatoire";
        private const string ErreurPassword = "Les mots de passe ne correspondent pas";
        private const string ErreurPromotion = "La promotion doit être une année";

        public int idutilisateur { get; set; }
        public UtilisateurWebService.UtilisateurEWS utilisateur { get; set; }

        #region Constructeur
        public EditionProfilControl()
        {
            InitializeComponent();

            // Inialisation des champs d'erreur
            lblErreurPrenom.Text = "";
            lblErreurPassword.Text = "";
            lblErreurNom.Text = "";
            lblErreurPromotion.Text = "";
        }

        public void InitForm ()
        {
            // Genere les listes
            foreach (Entity.Sexe.SexeDescription sexe in Entity.Sexe.getSexesDescriptions())
                cbSexe.Items.Add(sexe.Libelle);

            foreach (Entity.Filliere.FilliereDescription filliere in Entity.Filliere.getFillieresDescriptions())
                cbFilliere.Items.Add(filliere.Valeur);


            // Inialise les valeurs du formulaire
            txtNom.Text = utilisateur.nom;
            txtPrenom.Text = utilisateur.prenom;
            txtPromotion.Text = utilisateur.promotion.ToString();
            lblEmailValue.Text = utilisateur.email;

            if (utilisateur.sexe == 'M')
                cbSexe.SelectedItem = "Homme";
            else
                cbSexe.SelectedItem = "Femme";

            cbFilliere.SelectedItem = utilisateur.filliere;
            dateTimePickerNaissance.Value = utilisateur.datenaissance;
        }
        #endregion

        #region Methodes validations
        private bool compareMotsDePasse ()
        {
            if (txtPassword.Text == txtConfimer.Text)
                return true;
            else
                return false;
        }

        private bool testPromotionInt()
        {
            int tmp;
            if (Int32.TryParse(txtPromotion.Text, out tmp) && tmp >= 1900 && tmp <= 9999)
                return true;
            else
                return false;
        }
        #endregion

        #region Evénements
        private void btnEnregistrer_Click(object sender, EventArgs e)
        {
            UtilisateurWebService.UtilisateurWSSoapClient utilisateurWebService = WebServiceContext.utilisateurWebService;
            bool erreur = false;

            if (txtNom.Text == "")
            {
                erreur = true;
                lblErreurPrenom.Text = ErreurChampObligatoire;
            }
            else
                lblErreurPrenom.Text = "";

            if (txtPrenom.Text == "")
            {
                erreur = true;
                lblErreurNom.Text = ErreurChampObligatoire;
            }
            else
                lblErreurNom.Text = "";

            if (txtPromotion.Text == "")
            {
                erreur = true;
                lblErreurPromotion.Text = ErreurChampObligatoire;
            }
            else if (!testPromotionInt())
            {
                erreur = true;
                lblErreurPromotion.Text = ErreurPromotion;
            }
            else
                lblErreurPromotion.Text = "";

            if (!compareMotsDePasse())
            {
                erreur = true;
                lblErreurPassword.Text = ErreurPassword;
            }
            else
                lblErreurPassword.Text = "";

            if (!erreur)
            {
                string pass = txtPassword.Text == "" ? utilisateur.password : txtPassword.Text;

                utilisateurWebService.majUtilisateur(
                utilisateur,
                idutilisateur,
                txtPrenom.Text,
                txtNom.Text,
                lblEmailValue.Text,
                pass,
                cbSexe.SelectedItem.ToString() == "Homme" ? 'm' : 'f',
                cbFilliere.SelectedItem.ToString(),
                Int32.Parse(txtPromotion.Text),
                dateTimePickerNaissance.Value);

                lblMessage.Visible = true;
                if (txtPassword.Text != "")
                {
                    UtilisateurWebService.UtilisateurEWS newUtilisateur = new UtilisateurWebService.UtilisateurEWS();
                    newUtilisateur.email = lblEmailValue.Text;
                    newUtilisateur.password = txtPassword.Text;

                    ((MasterForm)ParentForm).utilisateur = utilisateurWebService.getUtilisateur(newUtilisateur, idutilisateur);
                }
                else
                    ((MasterForm)ParentForm).utilisateur = utilisateurWebService.getUtilisateur(utilisateur, idutilisateur);

                ((MasterForm)ParentForm).reloadLeftPanel();

            }
        }
        

        private void txtPromotion_Leave(object sender, EventArgs e)
        {
            if (!testPromotionInt())
                lblErreurPromotion.Text = ErreurPromotion;
            else
                lblErreurPromotion.Text = "";
        }

        private void txtConfimer_Leave(object sender, EventArgs e)
        {
            if (!compareMotsDePasse())
                lblErreurPassword.Text = ErreurPassword;
            else
                lblErreurPassword.Text = "";
        }
        #endregion
    }
}
